XC: Collaborative Rich Text Editing (Peritext) in Scala

Project

Conflict-free Replicated Data Types (CRDTs) allows multiple computers to perform concurrent updates to local data types while maintaining eventual consistency - without requiring coordination. This also works for text, thus enabling collaborative document editing. Most text CRDTs aren't designed for rich text formatting however and thus often don't preserve the users intent when combining concurrent edits on different computers. Peritext provides an algorithm that attempts to preserve the users intent when it comes to rich text formatting.

In this project you will learn how text CRDTs and specifically peritext works and reimplement the formatting-aware text CRDT in Scala.

References